CloudFront.8 CloudFront distributions should use SNI to serve HTTPS requestsの検出結果がFAILEDとなる条件について確認してみた

CloudFront.8 CloudFront distributions should use SNI to serve HTTPS requestsの検出結果がFAILEDとなる条件について確認してみた

カスタム証明書未使用の場合もCloudFront.8 CloudFront distributions should use SNI to serve HTTPS requestsはFAILEDとなります
Clock Icon2024.09.11

リテールアプリ共創部@大阪の岩田です。

Security Hubのコントロール[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requestsの検出結果がFAILEDとなる条件について確認してみたので内容を共有させて頂きます。

CloudFront distributions should use SNI to serve HTTPS requests

まず公式ドキュメントの記載について確認すると以下の記載が見つかりました。

This control checks if Amazon CloudFront distributions are using a custom SSL/TLS certificate and are configured to use SNI to serve HTTPS requests.

この記載からすると検出結果は以下のようになると読み取れます。

security-hub-cloudfront8-matrics

一方で上記の記載の後には検出結果がFAILEDになる条件として以下のようにも記載されています。

This control fails if a custom SSL/TLS certificate is associated but the SSL/TLS support method is a dedicated IP address.

また、上記ドキュメントに記載されている修復手順の記載は以下の通りで「カスタム証明書未使用の場合はカスタム証明書を使用するよう設定する」といった手順は特に言及されていません。

To configure a CloudFront distribution to use SNI to serve HTTPS requests, see Using SNI to Serve HTTPS Requests (works for Most Clients) in the CloudFront Developer Guide.

さらにカスタム証明書の利用有無については[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificatesという別のコントロールによってチェックされます。カスタム証明書未使用の場合をCloudFront.8でもFAILEDと検出してしまうと、検出内容が重複することになります。

これらのことを踏まえると検出結果は以下のようになるとも解釈できます。

security-hub-cloudfront8-matrics2

ドキュメントの記載だけだとカスタム証明書未使用の場合に検出結果がどうなるか解釈が難しかったので、実際にCloudFrontのディストリビューションを作成して検出結果を確認してみました。

やってみる

各パターンについて実際にCloudFrontのディストリビューションを作成してSecurity Hubの検出結果を確認してみます。

カスタム証明書無しの場合

マネコンからCloudFrontのディストリビューションを作成してみます。"Origin domain"と"説明"を入力し、WAFの保護は無効、その他の設定は全てデフォルトでディストリビューションを作成します。

cf-distribution-use-default-cert

カスタム証明書あり・SNI利用の場合

続いてカスタム証明書を設定する場合についても確認してみましょう。カスタム証明書を設定し、レガシークライアントサポートは無効のままディストリビューションを作成します。

cf-distribution-use-custom-cert-with-sni

カスタム証明書あり・専用IPアドレス利用の場合

続いてカスタム証明書を設定しつつSNIではなく専用IPアドレスを利用する場合も確認しておきます。600USD/月のコストが発生するので、検証が終わったら即削除するのを忘れないよう注意しましょう。

cf-distribution-use-custom-cert-with-dedicated-ip

検出結果を確認

ディストリビューションを作成したらSecurity Hubの検出結果が確認できるようになるのを待ちます。専用IPを使っているので早く結果が出るのを祈りましょう🙏

結果が出たらSecurity Hubのマネコンを確認していきます。以後いくつか画面キャプチャを記載していますが、各CloudFrontディストリビューションの用途は以下画像の通りです。

cf-distribution-id-list

カスタム証明書無しの場合

まずCloudFrontデフォルトの証明書を利用し、カスタム証明書は利用しないパターンです。

まず[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificatesが検出されています。

security-hub-control-cf7-default-cert

カスタム証明書を使用していないので想定通りですね。次に[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requestsの検出結果を確認してみましょう。

security-hub-control-cf8-default-cert

こちらも検出されていました。ということでカスタム証明書未使用の場合も[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requestsのコントロールには検知されるようです。

カスタム証明書あり・SNI利用の場合

続いてカスタム証明書あり・SNI利用の場合を確認してみましょう。こちらはCloudFront.7,CloudFront.8共にコンプライアンスのステータスがPASSEDとなりました。

security-hub-control-cf7-custom-cert-with-sni

security-hub-control-cf8-custom-cert-with-sni

想定通りです。

カスタム証明書あり・専用IPアドレス利用の場合

最後にカスタム証明書と専用IPアドレスを利用する構成についても確認しておきましょう。カスタム証明書を利用しているので[CloudFront.7] CloudFront distributions should use custom SSL/TLS certificatesについてはPASSEDとなっています。

security-hub-control-cf7-custom-cert-with-ip

一方で[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requestsについてはFAILEDとなっていました。

security-hub-control-cf8-custom-cert-with-ip

これも想定通りの挙動です。

まとめ

検証の結果[CloudFront.8] CloudFront distributions should use SNI to serve HTTPS requestsの評価結果は以下の通りでした。

security-hub-cloudfront8-matrics

CloudFront.8の検出条件は"カスタム証明書を使用している" AND "SSL/TLS support methodに専用IPを使用している"ではなく"カスタム証明書を使用していない" OR ("カスタム証明書を使用している" AND "SSL/TLS support methodに専用IPを使用している")となるようです。つまりカスタム証明書を使用しないCloudFrontディストリビューションは常にCloudFront.7,CloudFront.8の両方が検知されることになります。

参考

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.